package com.fengkai.filepost.pdfoutstream.test.ODsolutions;

import java.util.ArrayList;
import java.util.HashMap;

/**
 * @author Fengkai
 * @creat 2023/4/21
 * 有一批箱子（形式为字符串，设为str），
 * 要求将这批箱子按从上到下以之字形的顺序摆放在宽度为 n 的空地，请输出箱子的摆放位置。
 * 例如：箱子ABCDEFG，空地宽度为3，摆放结果如图：
 * 则输出结果为：
 * AFG
 * BE
 * CD
 * 输入描述
 * 输入一行字符串，通过空格分隔，前面部分为字母或数字组成的字符串str，表示箱子；
 * 后面部分为数字n，表示空地的宽度。例如：
 * ABCDEFG 3
 * 备注：
 * .请不要再最后一行输出额外的空行
 * .str只包含字母和数字，1 <= len(str) <= 1000
 * .1 <= n <= 1000
 */
public class ZhiXingBox {
    public static void main(String[] args) {
        HashMap<Integer, ArrayList<String>> abcdefg = box("ABCDEFG", 3);
        for (int i = 1; i <= 3; i++) {
            ArrayList<String> list = abcdefg.get(i);
            for (String s : list) {
                System.out.print(s);
            }
            System.out.println();
        }

    }

    public static HashMap<Integer, ArrayList<String>> box(String str, int n) {
        HashMap<Integer, ArrayList<String>> integerArrayListHashMap = new HashMap<>();

        boolean shunxu = true;
        int index = 0;
        int key = 1;
        while (index < str.length()){
            if (key == 0){
                shunxu = true;
                key = 1;
            }else if (key == n + 1){
                shunxu = false;
                key = n;
            }
            ArrayList<String> list = integerArrayListHashMap.getOrDefault(key, new ArrayList<>());
            list.add(String.valueOf(str.charAt(index)));
            integerArrayListHashMap.put(key, list);
           if (shunxu){
               key ++;
               index ++;
           }else {
               key --;
               index ++;
           }
        }

        return integerArrayListHashMap;
    }
}
